<?php
/**
 * PrynLib
 * @copyright 2007-2009 Prynel
 * @author Olivier ROGER <roger.olivier@gmail.com>
 * @category libPrynel
 * @package Form
 * @version $Revision: 80 $
 */

/**
 * Element ColorPicker. Permet de choisir une couleur dans une palette
 * @category libPrynel
 * @package Form
 * @subpackage Form_Element
 * @version 1.0.0 
 * @author Olivier ROGER <roger.olivier@gmail.com>
 * @copyright  2007-2009 Prynel
 *       
 *
 */
class Form_Element_Colorpicker extends Form_Element_Text
{
	
	/**
	 * Constructeur. Défini la couleur de base à rouge
	 *
	 * @param string $nom
	 * @param Form_Form $form
	 */
	public function __construct($nom,$form)
	{
		parent::__construct($nom,$form);
		$this->value('#FF0000');
	}
	/**
	 * Défini une couleur de base en RGB
	 *
	 * @param array $rgb
	 * @access public
	 * @return Form_Element_Colorpicker
	 */
	public function setRGBColor($rgb)
	{
		for($i=0;$i<2;$i++)
		{
			if($rgb[$i]<0 || $rgb[$i]>255)
				throw new Image_Exception('La valeur RGB est incorrecte (compris en 0 et 255');
		}
		$this->value('#'.str_pad((dechex($rgb[0]).dechex($rgb[1]).dechex($rgb[2])),6,"0",STR_PAD_LEFT));
		return $this;
	}
	
	/**
	 * Défini une couleur de base en Hexa
	 *
	 * @param string $color
	 * @access public
	 * @return Form_Element_Colorpicker
	 */
	public function setHexaColor($color)
	{
		if($color[0] =='#')
			$this->value($color);
		else
			$this->value('#'.$color);
		
		return $this;
	}
	
	/**
	 * Vérifie la couleur recu
	 *
	 * @param string $value
	 * @access public
	 * @return boolean
	 */
	public function isValid($value)
	{
		if(parent::isValid($value))
		{
			if(!preg_match('`^#([0-9a-fA-F]{6})$`',$value))
			{
				$this->errorMsg = Form_Error::COLOR;
				return false;
			}
			return true;
		}
	}
	/**
	 * Ecrit l'objet
	 *
	 * @return unknown
	 */
	public function __toString()
	{
		$field.=parent::__toString();
		$field.="\t".'<script type="text/javascript">'."\n";
		$field.="\t\t".'new Control.ColorPicker(\''.$this->attrs['id'].'\');'."\n";
		$field.="\t".'</script>'."\n";
		return $field;
	}
	
}
 ?>